home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C20 / PriorityQueue8.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  998 b   |  42 lines

  1. //: C20:PriorityQueue8.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // A more compact version of PriorityQueue7.cpp
  7. #include <iostream>
  8. #include <queue>
  9. #include <algorithm>
  10. #include <cstdlib>
  11. #include <ctime>
  12. using namespace std;
  13.  
  14. template<class T>
  15. class PQV : public priority_queue<T> {
  16. public:
  17.   typedef vector<T> TVec;
  18.   TVec vector() {
  19.     TVec r(c.begin(), c.end());
  20.     // c is already a heap
  21.     sort_heap(r.begin(), r.end(), comp);
  22.     // Put it into priority-queue order:
  23.     reverse(r.begin(), r.end());
  24.     return r;
  25.   }
  26. };
  27.  
  28. int main() {
  29.   PQV<int> pqi;
  30.   srand(time(0));
  31.   for(int i = 0; i < 100; i++)
  32.     pqi.push(rand() % 25);
  33.   const vector<int>& v = pqi.vector();
  34.   copy(v.begin(), v.end(),
  35.     ostream_iterator<int>(cout, " "));
  36.   cout << "\n-----------\n"; 
  37.   while(!pqi.empty()) {
  38.     cout << pqi.top() << ' ';
  39.     pqi.pop();
  40.   }
  41. } ///:~
  42.